package com.hci.mercatinidinatale.db;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.Scanner;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import android.util.Log;

public class XMLParser
{
	
	
	public String setXml(InputStream is)
	{
		String xmlFile;
	
		Scanner s = new Scanner(is).useDelimiter("\\A");
		xmlFile = s.hasNext() ? s.next() : "";
		return xmlFile;
    }
	
	public Document getDomElement(String xml){
        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
 
            DocumentBuilder db = dbf.newDocumentBuilder();
 
            InputSource is = new InputSource();
                is.setCharacterStream(new StringReader(xml));
                doc = db.parse(is); 
 
            } catch (ParserConfigurationException e)
            {
                Log.e("Error: ", e.getMessage());
                return null;
            } catch (SAXException e)
            {
                Log.e("Error: ", e.getMessage());
                return null;
            } catch (IOException e)
            {
                Log.e("Error: ", e.getMessage());
                return null;
            }
                // return DOM
            return doc;
    }
	
	public String getValue(Element item, String str)
	{      
	    NodeList n = item.getElementsByTagName(str);        
	    return this.getElementValue(n.item(0));
	}
	 
	public final String getElementValue( Node elem )
	{
         Node child;
         if( elem != null)
         {
             if (elem.hasChildNodes())
             {
                 for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() )
                 {
                     if( child.getNodeType() == Node.TEXT_NODE  )
                     {
                         return child.getNodeValue();
                     }
                 }
             }
         }
         return "";
	  } 

}
